package com.hl.springcloud.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author Liu Huan
 */
@Configuration
public class ConfigBean {
	
	//注册 RestTemplate 为bean，使得项目中可以使用它
	@Bean
	@LoadBalanced   // 使用 ribbon 负载均衡
	public RestTemplate getRestTemplete(){
		return new RestTemplate();
	}
	
	// Ribbon 的负载均衡核心接口 IRule，它有众多的实现类
	// AvailabilityFilteringRule    可以过滤掉不可用的服务，轮询可用的服务
	// RoundRobinRule               轮询      默认
	// RandomRule                   随机
	
	// 配置使用 随机算法 的负载均衡，将 随机 注入bean
	@Bean
	public IRule myRule(){
		return new RandomRule();
	}
	
}
